<?php

/*!
 * \file SoutenanceController.php
 * \namespace Site\SoutenanceBundle\Controller
 * \class SoutenanceController
 */

namespace Site\SoutenanceBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Site\SoutenanceBundle\Entity\Soutenance;
use Site\GeneralBundle\Entity\RDV;
use Site\ProjetBundle\Entity\Projet;

class DefaultController extends Controller
{

    /*!
     * \author Brice VICO
     *
     *\fn public function indexAction()
     * \return index.html.twig
     *
     * \brief Affiche le tableau contenant le planning des soutenance en récupérant tous les projets depuis la BDD,
     * \brief On ne renvoi que les projet ayant une date de soutenance.
     *
     */

    public function indexAction()
    {
        $em = $this->getDoctrine()->getManager();
        $donneesProjet = $em->getRepository("SiteProjetBundle:Projet")->findAll();

        $listeProjet = array();

        foreach ($donneesProjet as $projet)
        {
            if (!is_null($projet->getSoutenance()))
                $listeProjet[] = $projet;
        }

        return $this->render('SiteSoutenanceBundle:Default:index.html.twig', array('listeProjet' => $listeProjet));
    }

    /*!
     * \author Hovannes Genjoyan, Brice VICO
     *
     *\fn public function ajouterSoutenanceAction()
     *\param $id L'id du projet
     *\return ajouterSoutenance.html.twig
     *
     * \brief Cette fonction permet d'ajouter une soutenance à un projet avec un id = $id.
     * \brief Lorsqu'une soutenance existe alors cette fonction permet de la modifier.
     *
     * \brief 2 objet sont créés : RDV et Soutenance, ils sont liés entre eux puis soutenance est lui même lié avec le projet.
     * \brief Cependant date, heure et salle sont récupéré grâce à $request car il ne font pas partie du formulaire généré avec createFormBuilder
     *
     * \brief La vue est retournée avec le formulaire, l'objet projet et des variables :
     * \brief - afficherflash : afficher le message flash ou non
     * \brief - flash : Le message flash.
     *
     */


	public function ajouterSoutenanceAction($id)
	{
        $em = $this->getDoctrine()->getManager();
        $projet = $em->getRepository("SiteProjetBundle:Projet")->find($id);

        if (is_null($projet->getSoutenance()))
            $soutenance = new Soutenance();
        else
            $soutenance = $projet->getSoutenance();

        $rdv = new RDV();

		$formBuilder = $this->createFormBuilder($soutenance);
		$formBuilder
		->add('jury', 'text', array('attr'=> array('class' =>'form-control')))
		->add('jure2', 'text', array('attr'=> array('class' =>'form-control')));
		$form = $formBuilder->getForm();

		$request = $this->get('request');
		if($request->getMethod() == 'POST')
        {
			$form->bind($request);
			if($form->isValid())
            {
                $rdv->setDate(new \DateTime($request->get('date') .' '. $request->get('heure')));
                $rdv->setSalle($request->get('salle'));

                $soutenance->setRdv($rdv);

                $projet->setSoutenance($soutenance);

                $em->persist($rdv);
                $em->persist($soutenance);
                $em->persist($projet);
		$em->flush();

	            return $this->render('SiteSoutenanceBundle:Default:ajouterSoutenance.html.twig', array('form'=> $form->createView(), 'afficherFlash' => 1, 'flash' => "Soutenance ajoutée avec succés", 'projet' => $projet));
			}
	            return $this->render('SiteSoutenanceBundle:Default:ajouterSoutenance.html.twig', array('form'=> $form->createView(), 'afficherFlash' => 0, 'projet' => $projet));
		}
		return $this->render('SiteSoutenanceBundle:Default:ajouterSoutenance.html.twig', array('form'=> $form->createView(), 'afficherFlash' => 0, 'projet' => $projet));

    }
}
